연산자(Operators)

✒️ 2025-05-16 17:02 내용 수정


주의사항


연산자 종류

종류 연산자 기능
최고연산자 . () 가장 먼저 연산
증감연산자 ++, -- 1씩 증감
산술연산자 +, -, /, % 사칙연산, 나머지연산
시프트연산 >>, << 비트의 이동
비교연산자 >, < >=, <=, ==, != 두 값의 비교
논리연산자 &&, ||, !, ^ 논리의 연산
비트연산자 &, |, ~, ^ 비트단위의 논리연산
대입연산자 =, +=, -=, *=, /=, %=* 우변의 값을 좌변에 대입
삼항연산자 조건식 ? A : B 조건식의 결과에 따라 A(true)와 B(false)를 선택
instanceof 연산자 A instanceof B 참조 변수가 참조하고 있는 인스턴스의 실제 타입 반환
우선순위 연산자 설명
1 ()
[]
new
.
::
괄호
배열 접근
객체 생성
멤버 접근
메서드 참조
2 ++
--
단항 후위 증가
단항 후위 감소
3 +
-
!
~
++
--
단항 플러스
단항 마이너스
논리 NOT
비트 NOT
단항 전위 증가
단항 전위 감소
4 (type) 형변환 (캐스팅)
5 *, /, % 곱셈, 나눗셈, 나머지 연산
6 +, -
+
덧셈, 뺄셈
문자열 연결
7 <<, >>
>>>
비트 시프트
8 <, <=
>, >=
instanceof
관계 연산
타입 비교 (instanceof)
9 ==
!=
동등성 검사
10 & 비트 AND
11 ^ 비트 XOR
12 | 비트 OR
13 && 논리 AND
14 || 논리 OR
15 ?: 삼항 조건 연산자
16 =, +=, -=, *=
/=, %=, &=, ^=
|=, <<=, >>=
>>>=
대입 연산
17 ->
->
람다표현식
스위치 표현식

산술 연산자

산술 연산자 설명
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈 후 몫을 반환
% 나눗셈 후 나머지를 반환

대입 연산자

대입 연산자 설명
A = B A에 B 대입
A += B A + B , 결과를 A에 대입
A -= B A - B , 결과를 A에 대입
A *= B A * B , 결과를 A에 대입
A /= B A / B , 결과를 A에 대입
A %= B A % B , 결과를 A에 대입
a = a + 1;
a += 1; // 둘은 같은 역할을 한다.
int x = 10;
int y = 1;

y += x;
System.out.println("y += x : " + y);

y *= x;
System.out.println("y *= x : " + y);

y %= x;
System.out.println("y %= x : " + y);
y += x : 11
y *= x : 110
y %= x : 0

비교 연산자

비교연산자 설명
A > B A가 B보다 크다
A < B A가 B보다 작다
A >= B A가 B보다 크거나 같다
A <= B A가 B보다 작거나 같다
A == B A와 B가 같다
A != B A와 B가 다르다
int a = 10;
int b = 20;
boolean result;

result = a < b;
System.out.println("a < b : " + result);

result = a == b;
System.out.println("a == b : " + result);

result = a != b;
System.out.println("a != b : " + result);
a < b : true
a == b : false
a != b : true

증감 연산자

증감 연산자 설명
++n n 값을 1 증가시키고 연산 진행
호출 시 연산을 먼저 진행하고 호출함
n++ 연산 진행 후 n 값을 1 증가시킴
호출 시 호출을 먼저 한 뒤에 연산을 진행함
--n n 값을 1 감소시키고 연산 진행
호출 시 연산을 먼저 진행하고 호출함
n-- 연산 진행 후 n 값을 1 감소시킴
호출 시 호출을 먼저 한 뒤에 연산을 진행함
int a = 0;
int b = 4;

a = ++b; // b = 5, a = b = 5
System.out.println("a : "+ a + "b : " + b)
a : 5
b : 5
int a = 0;
int b = 4;

a = b++; // a = 4, b = 4 + 1 = 5
System.out.println("a : "+ a + "b : " + b)
a : 4
b : 5
for (int i = 0; i < 10; i++) {
// i = 0 부터 for 이내의 연산을 시행하고
// i + 1 을 수행한 다음 다시 연산을 진행해서
// i = 9 가 될 때까지 연산을 반복한다
}

논리 연산자

논리 연산자 설명
&& 논리 AND 연산. 논리식이 모두 true일 때 true 값을 반환
|| 논리 OR 연산. 논리식 중 하나라도 true일 때 true 값을 반환
! 논리 NOT 연산. 논리식 결과가 true일 때 false 값을, 결과가 false일 때 true 값을 반환
^ 논리 XOR 연산, 두 항이 다르면 true, 같으면 false
// && 연산자
int myAge = 30;
int limit = 35;
boolean result = (limit - myAge) >= 5 && myAge > 30;
System.out.println("result : " + result);

// || 연산자
int n1 = 10;
int n2 = 20;
boolean result2 = (n1+=10) > 20 || n2 -10 == 11;
System.out.println("result2 : " + result2);

//! 연산자
System.out.println("!result2 : " + !result2);
result : false
result2 : false
result3 : true

비트 연산자

비트 연산자 설명
& 논리 AND 연산, 두 항이 모두 true일 때 true 값을 반환
| 논리 OR 연산, 두 항 중 하나라도 true일 때 true 값을 반환
^ 논리 XOR 연산, 두 항이 다르면 true, 같으면 false
~ 논리 NOT 연산, 참을 거짓으로, 거짓을 참으로 체크. -(값+1)을 반환
// & 연산자
int a = 10; // 1010
int b = 7; // 0111
int c = a & b;
System.out.println("c : " + c);

// | 연산자 
int a2 = 12; // 1100
int b2 = 8; // 1000
int c2 = a2 | b2;
System.out.println("c2 : " + c2);

// ^ 연산자
int a3 = 9; // 1001
int b3 = 11; // 1011
int c3 = a3 ^ b3;
System.out.println("c3 : " + c3);

// ~ 연산자
int x = 7;
System.out.println("~x : " + ~x);
c : 2
c2 : 12
c3 : 2
~x : -8

시프트 연산자

시프트 연산자 설명
<< 비트를 왼쪽으로 이동
>> 비트를 오른쪽으로 이동
// 시프트 연산자
int i = 2; //0010
System.out.println("i << 2 : " + (i << 2));
System.out.println("i >> 2 : " + (i >> 2));
i << 2 : 8
i >> 2 : 0

예제

package exam02;

public class OperatorExam01 {

	public static void main(String[] args) {

		int num01 = 100;

		byte byNum01 = 10;

		long lyNum01 = 20;

		double dyNum01 = 33.3333;

		// byte 끼리 더했는데 결과는 int 로 나온다..

		//byte byResult = byNum01 + byNum01;

		int inResult01 = byNum01 + byNum01;

		long longResult01 = lyNum01 + num01;

		inResult01 = byNum01 + num01;

		int target = 10;

		System.out.println(target % 3); // % 는 나누기 후 몫을 출력한다

		}

}
package exam02;

public class UpDownExam {
  
	public static void main(String[] args) {

		int num = 10;

		int sum = 0;

		sum = num++;

		String str = ""; // String 의 빈 값

		str = "sum = " + sum + ", num : " + num;

		System.out.println(str);

		sum = ++num;

		System.out.println("sum = " + sum + ", num : " + num);

		}

}
package exam02;

public class CompareExam {

	public static void main(String[] args) {

		int a = 10;

		int b = 15;

		int c = 12;

		System.out.println(a >= b); // a가 b보다 크거나 같다.

		System.out.println(a < b); // a가 b보다 작다.

		System.out.println(c == b); // c와 b가 같다.

		System.out.println(a != b); // a와 b가 같지 않다.

		System.out.println("=============================");

		//논리연산 &&(AND) ||(OR)

		System.out.println( (a < b) && (b > c)); //a가 b보다 작고, b는 c보다 크다

		System.out.println( (a > b) && (b > c)); //a가 b보다 크고, b는 c보다 크다

		System.out.println( (a > b) || (b > c)); //a가 b보다 크거나, b는 c보다 크다

		}

}